package main

import (
	"log"

	"github.com/garyburd/redigo/redis"
)

func checkError(e error) bool {
	if e != nil {
		log.Fatal(e)
		return false
	} else {
		return true
	}
}

// 写入
func write(c redis.Conn) {
	_, err := c.Do("SET", "mykey", "aaaabbbb") // 这里写入值不会过期
	// _, err := c.Do("SET", "mykey", "bbbbaaaa", "EX", "5") // 设置过期时间，单位秒

	if checkError(err) {
		log.Println("写入成功")
	}
}

// 读取
func read(c redis.Conn) {
	mykey, err := redis.String(c.Do("GET", "mykey"))
	if checkError(err) {
		log.Println("mykey : ", mykey)
	}
}

// 检测值是否存在
func checkKey(c redis.Conn, s string) bool {
	isKeyExit, err := redis.Bool(c.Do("EXISTS", s))
	if err != nil {
		log.Println("err: ", err)
		return false
	} else {
		return isKeyExit
	}

}

// 删除
func delete(c redis.Conn, s string) {
	_, err := c.Do("DEL", s)
	if err != nil {
		log.Fatal(err)
	}
	if checkKey(c, s) {
		log.Println("删除失败")
	} else {
		log.Println("删除成功")
	}

}

func main() {
	log.SetFlags(log.Lshortfile | log.LstdFlags)

	r, err := redis.Dial("tcp", "127.0.0.1:6379")

	if checkError(err) {
		log.Println("Redis连接成功")
	}

	defer r.Close()

	// write(r)
	// time.Sleep(6 * time.Second) // 设置等待时间，测试写入有效时间
	// read(r)
	// log.Println(checkKey(r, "mykey"))
	// delete(r, "mykey")
}
